{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## QGAN\n",
    "\n",
    "In this notebook, we are going to use Aqua's implementation of a Quantum Generative Adversarial Network to prepare a quantum state which is close to a given probability distribution "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "%matplotlib inline\n",
    "import numpy as np\n",
    "import matplotlib.pyplot as plt\n",
    "from qiskit import Aer\n",
    "from qiskit.aqua import QuantumInstance\n",
    "from qiskit.aqua.algorithms import QGAN"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "We first generate training data taken from a simple probability distribution"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "np.random.seed(2020)\n",
    "N = 1000\n",
    "\n",
    "real_data = np.random.binomial(3,0.5,N)\n",
    "plt.hist(real_data, bins = 4);"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Now, we define the parameters for our QAN and train it with the real data. Then, we use the trained generator to generate some samples and we represent them in a histogram.  "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "n = 2\n",
    "num_qubits = [n]\n",
    "num_epochs = 100\n",
    "batch_size = 100\n",
    "bounds = [0,3]\n",
    "qgan = QGAN(data = real_data, \n",
    "            num_qubits = num_qubits, \n",
    "            batch_size = batch_size, \n",
    "            num_epochs = num_epochs,\n",
    "            bounds = bounds,\n",
    "            seed = 2020)\n",
    "quantum_instance = QuantumInstance(backend=Aer.get_backend('statevector_simulator'))\n",
    "result = qgan.run(quantum_instance)\n",
    "samples_g, prob_g = qgan.generator.get_output(qgan.quantum_instance, shots=10000)\n",
    "plt.hist(range(4), weights = prob_g, bins = 4);"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "We show the evolution of the loss function of both the generator and the discriminator"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.title(\"Loss function evolution\")\n",
    "plt.plot(range(num_epochs), qgan.g_loss, label='Generator')\n",
    "plt.plot(range(num_epochs), qgan.d_loss, label='Discriminator')\n",
    "plt.legend()\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "And, also, the evolution of the relative entropy during the training."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.title('Relative entropy evolution')\n",
    "plt.plot(qgan.rel_entr)\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "{'qiskit-terra': '0.14.2',\n",
       " 'qiskit-aer': '0.5.2',\n",
       " 'qiskit-ignis': '0.3.3',\n",
       " 'qiskit-ibmq-provider': '0.7.2',\n",
       " 'qiskit-aqua': '0.7.3',\n",
       " 'qiskit': '0.19.6'}"
      ]
     },
     "execution_count": 6,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "import qiskit\n",
    "qiskit.__qiskit_version__"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.7.6"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 4
}
